# 功能描述
流程配置过程中,最重要的一块功能是人员配置,系统提供了灵活的策略查找审批人。审批人分为两种类型:用户和用户组。
任务节点分为两种类型:
# 操作步骤
入口:开发配置——流程管理——流程方案 点击【方案配置】
点击【审批人员】
选择一个节点,点击添加
我们这里添加的是一个用户组。
我们可以添加多个用户组,我们查找人员的策略是:
每个用户组有条件脚本,如果脚本为空,则返回为true。
如果条件满足则获取根据下面的用户策略返回人员,如果找到了人员则返回,如果没有人员,则计算下一个用户组。
上图中这个是返回发起人。应为条件脚本返回为true,获取下面的策略返回的人员。
用户策略详细说明: 他的意思是如果有多个策略,则第一个策略的计算逻辑和第二个策略的进行计算。
# 计算逻辑: 或,与,非
计算逻辑是或,那么人员就是 第一个和第二个策略的人员产生并集。 计算逻辑是与,那么人员是第一个策略和第二个策略的人员产生交集。 计算逻辑是非,那么人员是第一个策略的人员排除第二个策略人员。
# 是否计算用户
是:如果是用户组,那么会根据用户组 获取组中的人员。 否:如果是用户组,不会计算用户组中的人员。 延迟:延迟是针对会签来说的,只有节点是会签节点,延迟计算才会出现。
# 他和不计算的区别是
不计算:当一个节点返回是两个用户组,那么这个时候会产生两条任务,任务的执行人是用户组。 延迟计算:当一个节点返回的是两个用户组,那么这个时候也是产生两条任务。
比如用户组1 有A,B两个用户,用户组B有两个用户C,D。
任务1的候选人是具体的人A,B,任务2的候选人是具体的用户C,D。
# 人员策略
系统支持多个人员策略,用户也可以实现自己的策略。
# 发起人
# 用户
指定具体的用户
# 用户组
选择具体的用户组
# 用户来自其他节点的审批人
这个节点的审批人来自于其他已经审批过的节点审批人,这个节点应该是选择之前审批过的节点,比如N1 不能选择 后面的节点。
# 用户或组来自流程变量
这个指的是人员来自流程变量。
授权类型:
用户:指的下面的选择的变量表示为一个用户的ID 用户组:指的下面选择的变量表示为一个用户组的ID
# 用户或组来自表单数据
这个策略的意思是流程的审批人员来自于表单。
类型:
用户:表示表单的某个字段为一个用户ID,这个用户ID作为节点的审批人。 用户组:表示表单的某个字段为一个用户组的ID,这个组内用户为节点的审批人。
# 用户或组来自脚本运算
表示节点的审批人是通过脚本计算的,节点的返回值为 Collection
# 人员脚本计算
人员脚本实际上也是执行的脚本,但和脚本不同的是,这个脚本由开发人员开发,开发完成后,配置到人员脚本,那么业务人员就可以通过选择,简单的进行配置了。
# 用户来自用户关系运算
平台中组织架构中,通过人与人的关系查找人员。
用户:选择的用户变量 用户关系类型:指的是通过组织建立的用户之间的关系。 关系方:选择关系的一方。
上图指的是 :查找发起人的上下级关系的上级人员。
# 用户组来自用户与组关系运算
这个策略返回的是 根据指定的用户和 关系类型 查找对应的用户组。
# 用户来自用户与组关系运算
用户组来自:指的是这个用户组的来源: 变量: 这个变量指的是一个用户组 用户组:指定的一个具体用户组 发起人所在的部门:指的是发起人所在的部门 上一步审批人所在的部门: 指的是上一步审批人的组织 上级部门:这个是可以勾选的,意思是如果勾选了,则根据前面的组,返回他上一级的组织。 用户关系类型:这个是可以勾选的,选择某个组的某个关系类型的人员。
# 用户来自发起人所在部门往上查找符合等级的部门的关系用户
这个策略指的是根据发起人所在部门 向上查找等级符合指定的等级 部门,并查找指定关系的用户。
比如 获取发起人,分公司的财务。
# 根据用户或组属性查找
平台支持用户设置自定义属性,我们在平台中支持通过属性实现人员查找,比如获取年龄 大于30岁,学历为本科,女性的人员。
# 用户或组来自脚本运算例子
# 应用场景
根据表单数据或有一些特殊业务,想动态设置用户或用户组,最终返回Collection
例子:
import com.redxun.bpm.core.entity.TaskExecutor;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.redxun.bpm.core.entity.AbstractExecutionCmd;
import com.redxun.bpm.activiti.util.ProcessHandleHelper;
AbstractExecutionCmd cmd=(AbstractExecutionCmd) ProcessHandleHelper.getProcessCmd();
JSONObject data = JSONObject.parseObject(cmd.getJsonData());
Collection<TaskExecutor> users=new ArrayList<>();
users.add(TaskExecutor.getUserExecutor("51572300843278576","刘备"));
return users;
其中cmd.getJsonData()是获取表单的数据 可使用"data.标识键"来获取表单字段的数据,子表则为data.SUB_.子表标识键获取json数组